﻿using Authority.Model;
using System.Collections.Generic;
using Tool.Model;

namespace Authority.Logic
{
    /// <summary>
    /// 菜单操作逻辑接口
    /// </summary>
    public interface ISysMenuService
    {
        /// <summary>
        /// 获取角色可操作菜单
        /// </summary>
        /// <returns></returns>
        ResultJsonInfo<List<SysMenuEntity>> LoadMenusByRoles();

        /// <summary>
        /// 获取子菜单
        /// </summary>
        /// <param name="ParentCode"></param>
        /// <returns></returns>
        ResultJsonInfo<List<MenuInfo>> LoadSubMenus(string ParentCode);

        /// <summary>
        /// 根据Name获取菜单信息(列表页面)
        /// </summary>
        /// <returns></returns>
        ResultJsonInfo<List<MenusListResponse>> LoadMenusList(string name);

        /// <summary>
        /// 获取菜单信息
        /// </summary>
        /// <returns></returns>
        ResultJsonInfo<List<RoleMenusListResponse>> LoadMenusListInfoByRoleCode(string gRoleCode);

        /// <summary>
        /// 新增根节点信息
        /// </summary>
        /// <param name="inputInfo"></param>
        /// <returns></returns>
        ResultJsonInfo<int> AddRoot(MenusRootRequest inputInfo);

        /// <summary>
        /// 新增子节点信息
        /// </summary>
        /// <param name="inputInfo"></param>
        /// <returns></returns>
        ResultJsonInfo<int> AddChild(MenusChildRequest inputInfo);

        /// <summary>
        /// 修改菜单信息
        /// </summary>
        /// <param name="inputInfo"></param>
        /// <returns></returns>
        ResultJsonInfo<int> Modify(MenusModifyRequest inputInfo);

        /// <summary>
        /// 删除信息
        /// </summary>
        /// <param name="gCodes"></param>
        /// <returns></returns>
        ResultJsonInfo<int> Remove(List<string> gCodes);

        /// <summary>
        /// 移动顺序操作
        /// </summary>
        /// <param name="inputInfo"></param>
        /// <returns></returns>
        ResultJsonInfo<int> Move(MenusMoveRequest inputInfo);

        /// <summary>
        /// 获取按钮信息
        /// </summary>
        /// <param name="inputInfo"></param>
        /// <returns></returns>
        ResultJsonInfo<MenuButtonsListResponse> LoadButtons(string inputInfo);

        /// <summary>
        /// 保存选中按钮
        /// </summary>
        /// <param name="inputInfo"></param>
        /// <returns></returns>
        ResultJsonInfo<int> SaveButtons(MenuButtonsSaveRequest inputInfo);

        
    }
}
